home *** CD-ROM | disk | FTP | other *** search
/ NeXT Education Software Sampler 1992 Fall / NeXT Education Software Sampler 1992 Fall.iso / Programming / Source / winterp-1.13 / examples / List.lsp < prev    next >
Encoding:
Lisp/Scheme  |  1991-10-05  |  18.6 KB  |  635 lines

  1. ; -*-Lisp-*-
  2. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  3. ;
  4. ; File:         List.lsp
  5. ; RCS:          $Header: List.lsp,v 1.4 91/10/05 03:40:36 mayer Exp $
  6. ; Description:  Demo of XM_LIST_WIDGET_CLASS
  7. ; Author:       Niels Mayer, HPLabs
  8. ; Created:      Sun Feb 10 20:33:16 1991
  9. ; Modified:     Sat Oct  5 03:39:21 1991 (Niels Mayer) mayer@hplnpm
  10. ; Language:     Lisp
  11. ; Package:      N/A
  12. ; Status:       X11r5 contrib tape release
  13. ;
  14. ; WINTERP Copyright 1989, 1990, 1991 Hewlett-Packard Company (by Niels Mayer).
  15. ; XLISP version 2.1, Copyright (c) 1989, by David Betz.
  16. ;
  17. ; Permission to use, copy, modify, distribute, and sell this software and its
  18. ; documentation for any purpose is hereby granted without fee, provided that
  19. ; the above copyright notice appear in all copies and that both that
  20. ; copyright notice and this permission notice appear in supporting
  21. ; documentation, and that the name of Hewlett-Packard and Niels Mayer not be
  22. ; used in advertising or publicity pertaining to distribution of the software
  23. ; without specific, written prior permission.  Hewlett-Packard and Niels Mayer
  24. ; makes no representations about the suitability of this software for any
  25. ; purpose.  It is provided "as is" without express or implied warranty.
  26. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  27.  
  28. (defun motif-1.1-p () 
  29.   (and (eq *MOTIF_VERSION* 1) (eq *MOTIF_REVISION* 1)))
  30.  
  31. (setq toplevel_w
  32.       (send TOP_LEVEL_SHELL_WIDGET_CLASS :new "listsh"
  33.         :XMN_TITLE        "Winterp: XmList Test"
  34.         :XMN_ICON_NAME    "W:XmList-Test"
  35.         ))
  36.  
  37. (setq scrl_w
  38.       (send XM_SCROLLED_WINDOW_WIDGET_CLASS :new :managed
  39.         "sc" toplevel_w
  40.         :XMN_SCROLLING_POLICY    :automatic
  41.         ))
  42.  
  43. (setq rc_w
  44.       (send XM_ROW_COLUMN_WIDGET_CLASS :new :managed
  45.         "rc" scrl_w
  46.         :XMN_ORIENTATION        :VERTICAL
  47.         :XMN_PACKING        :PACK_TIGHT
  48.         :XMN_ENTRY_ALIGNMENT     :ALIGNMENT_CENTER
  49. ;;;        :XMN_FOREGROUND        "Black"
  50. ;;;        :XMN_BACKGROUND        "LightGray"
  51.         ))
  52.  
  53. (send toplevel_w :realize)
  54.  
  55. (setq items-list '("foo" "bar" "baz" "bof" "boof" "frob" "snob" "blog"))
  56.  
  57. (setq list0_w
  58.       (send XM_LIST_WIDGET_CLASS :new :managed :scrolled
  59.         "list0" rc_w
  60.         :XMN_SELECTION_POLICY    :browse_select
  61.         :XMN_ITEMS            items-list
  62.         :XMN_ITEM_COUNT        (length items-list)
  63.         :XMN_VISIBLE_ITEM_COUNT    20
  64.         ))
  65.  
  66. (setq retrieved-items-list
  67.       (let* ((items_array (send list0_w :get_items))
  68.          (items_length (length items_array))
  69.          (result '())
  70.          )
  71.     (do ((i 0 (1+ i))
  72.          )
  73.         ((= i items_length)
  74.          (reverse result)
  75.          )
  76.         (setq result
  77.           (cons (xm_string_get_l_to_r (aref items_array i))
  78.             result))
  79.         )))
  80.  
  81. (print items-list)
  82. (print retrieved-items-list)
  83.  
  84. (if (not (equal items-list retrieved-items-list))
  85.     (error (format nil "~A =/= ~A\n" items-list retrieved-items-list)))
  86.  
  87.  
  88. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  89. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  90. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  91.  
  92.  
  93. (defun directory-list (dir)
  94.   (do* 
  95.    ((fp (popen (strcat "ls -lr " dir)
  96.            :direction :input))
  97.     (line (read-line fp) (read-line fp))
  98.     (result (list line) (cons line result))
  99.     )
  100.    ((null line)
  101.     (pclose fp)
  102.     (cdr result)
  103.     )
  104.    )
  105.   )
  106.  
  107. (setq length
  108.       (length
  109.        (setq list (directory-list "$HOME"))
  110.        ))
  111.  
  112.  
  113. (setq list1_w
  114.       (send XM_LIST_WIDGET_CLASS :new :managed :scrolled
  115.         "list1" rc_w 
  116.         :XMN_WIDTH                500
  117.         :XMN_SELECTION_POLICY        :extended_select
  118.         :XMN_LIST_SIZE_POLICY        :constant
  119.         :XMN_SCROLL_BAR_DISPLAY_POLICY    :static
  120.         :XMN_TRAVERSAL_ON            T
  121.         :XMN_ITEMS                list
  122.         :XMN_ITEM_COUNT            length
  123.         :XMN_VISIBLE_ITEM_COUNT        20
  124.         ))
  125.  
  126. (send list1_w :set_values 
  127.       :XMN_ITEMS    list
  128.       :XMN_ITEM_COUNT    length
  129.       )
  130.  
  131. (send list1_w :get_values 
  132.       :XMN_ITEM_COUNT nil
  133.       )
  134.  
  135. (send list1_w :set_values 
  136.       :XMN_SELECTED_ITEMS    list
  137.       :XMN_SELECTED_ITEM_COUNT    length
  138.       )
  139.  
  140. (setq retrieved-items-list
  141.       (let* ((items_array (send list1_w :get_selected_items))
  142.          (items_length (length items_array))
  143.          (result '())
  144.          )
  145.     (do ((i 0 (1+ i))
  146.          )
  147.         ((= i items_length)
  148.          (reverse result)
  149.          )
  150.         (setq result
  151.           (cons (xm_string_get_l_to_r (aref items_array i))
  152.             result))
  153.         ))
  154.       )
  155.  
  156. (print list)
  157. (print retrieved-items-list)
  158.  
  159. (if (not (equal list retrieved-items-list))
  160.     (error (format nil "~A =/= ~A\n" list retrieved-items-list)))
  161.  
  162.  
  163. (send list1_w :set_values 
  164.       :XMN_WIDTH 400
  165.       )
  166.  
  167.  
  168. (setq item (send list1_w :ADD_ITEM (symbol-name (gensym)) 12))
  169. (send list1_w :ADD_ITEM_UNSELECTED (symbol-name (gensym)) 12)
  170. (send list1_w :DELETE_ITEM item)
  171. (send list1_w :DELETE_POS 1)
  172. (send list1_w :SELECT_ITEM item)
  173. (send list1_w :DESELECT_ITEM item)
  174. (send list1_w :SELECT_POS 2)
  175. (send list1_w :DESELECT_POS 2)
  176. (send list1_w :DESELECT_ALL_ITEMS)
  177. (send list1_w :SET_POS 3)
  178. (send list1_w :SET_BOTTOM_POS 10)
  179. (send list1_w :SET_ITEM item)
  180. (send list1_w :SET_BOTTOM_ITEM item)
  181. (send list1_w :ITEM_EXISTS "foo")
  182. (send list1_w :ITEM_EXISTS item)
  183. (send list1_w :SET_HORIZ_POS 0)
  184.  
  185. (if (motif-1.1-p)
  186. (progn
  187.  
  188. (send list1_w :add_items
  189.       (list (symbol-name (gensym)))
  190.       0)
  191.  
  192.  
  193. (send list1_w :add_items
  194.       (list (symbol-name (gensym)))
  195.       10)
  196.  
  197.  
  198. (send list1_w :add_items
  199.       (list (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)))
  200.       0)
  201.  
  202. (send list1_w :add_items
  203.       (list (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)))
  204.       2)
  205.  
  206. (send list1_w :add_items
  207.       (vector (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)) (symbol-name (gensym)))
  208.       10)
  209.  
  210. (send list1_w :add_items
  211.       #("FIRST" "SECOND" "THIRD" "FOURTH" "FIFTH" "SIXTH" "SEVENTH" "EIGTH" "NINTH" "TENTH")
  212.       10)
  213.  
  214. (setq array-of-xmstrings
  215.       (vector (xm_string_create "FIRST")
  216.           (xm_string_create "SECOND")
  217.           (xm_string_create "THIRD")
  218.           (xm_string_create "FOURTH")
  219.           (xm_string_create "FIFTH")
  220.           (xm_string_create "SIXTH")
  221.           (xm_string_create "SEVENTH")
  222.           (xm_string_create "EIGTH")
  223.           (xm_string_create "NINTH")
  224.           (xm_string_create "TENTH"))
  225.       )
  226.  
  227. (send list1_w :add_items array-of-xmstrings 10)
  228.  
  229. (send list1_w :delete_items array-of-xmstrings)
  230.  
  231. (send list1_w :delete_items
  232.       #("FIRST" "SECOND" "THIRD" "FOURTH" "FIFTH" "SIXTH" "SEVENTH" "EIGTH" "NINTH" "TENTH")
  233.       )
  234.  
  235. (send list1_w :DELETE_ITEMS_POS 1 1)
  236. (send list1_w :DELETE_ITEMS_POS 2 10)
  237.  
  238. (send list1_w :delete_all_items)
  239.  
  240. (send list1_w :add_items array-of-xmstrings 1)
  241. (send list1_w :add_items array-of-xmstrings 0)
  242.  
  243. (send list1_w :REPLACE_ITEMS
  244.       array-of-xmstrings 
  245.       #("1st" "2ond" "3rd" "4th" "5th" "6th" "7th" "8th" "9th" "10th")
  246.       )
  247.  
  248. (send list1_w :REPLACE_ITEMS_POS
  249.       #("1st" "2ond" "3rd" "4th" "5th" "6th" "7th" "8th" "9th" "10th")
  250.       1)
  251.  
  252. (send list1_w :REPLACE_ITEMS_POS
  253.       #("1st" "2ond" "3rd" "4th" "5th" "6th" "7th" "8th" "9th" "10th")
  254.       10)
  255.  
  256. (send list1_w :SET_ADD_MODE t)
  257. (send list1_w :SET_ADD_MODE nil)
  258.  
  259. (send list1_w :ITEM_POS "10th")
  260.  
  261. (send list1_w :get_match_pos "1st")
  262. (send list1_w :get_match_pos "FIRST")
  263.  
  264. (send list1_w :get_selected_pos)
  265.  
  266. ))
  267.  
  268. (gc)
  269.  
  270. (setq cb1es
  271.       (send list1_w :set_callback :xmn_extended_selection_callback
  272.         '(
  273.           callback_widget
  274.           callback_reason 
  275.           callback_xevent
  276.           callback_item
  277.           callback_item_length
  278.           callback_item_position
  279.           callback_selected_items
  280.           callback_selected_item_count
  281.           callback_selection_type
  282.           callback_selected_item_positions ;new for 1.1
  283.           )
  284.         '(
  285.           (format T "-------------------------------------------\n")
  286.           (format T "widget=~A, reason=~A, xevent=~A\n" 
  287.               callback_widget callback_reason callback_xevent)
  288.           (format T "LIST_ITEM=~A\n"
  289.               callback_item)
  290.           (format T "LIST_ITEM_LENGTH=~A\n"
  291.               callback_item_length)
  292.           (format T "LIST_ITEM_POSITION=~A\n"
  293.               callback_item_position)
  294.           (format T "LIST_SELECTED_ITEMS=~A\n"
  295.               callback_selected_items)
  296.           (format T "LIST_SELECTED_ITEM_COUNT=~A\n"
  297.               callback_selected_item_count)
  298.           (format T "LIST_SELECTION_TYPE=~A\n"
  299.               callback_selection_type)
  300.           (format T "CALLBACK_SELECTED_ITEM_POSITIONS=~A\n"
  301.               callback_selected_item_positions)
  302.           )
  303.         ))
  304.            
  305. (send list1_w :remove_all_callbacks :xmn_extended_selection_callback)
  306.  
  307. (setq cb1da
  308.       (send list1_w :set_callback :xmn_default_action_callback
  309.         '(
  310.           callback_widget
  311.           callback_reason 
  312.           callback_xevent
  313.           callback_item
  314.           callback_item_length
  315.           callback_item_position
  316. ;;;          callback_selected_items
  317. ;;;          callback_selected_item_count
  318. ;;;          callback_selection_type
  319.           )
  320.         '(
  321.           (format T "-------------------------------------------\n")
  322.           (format T "widget=~A, reason=~A, xevent=~A\n" 
  323.               callback_widget callback_reason callback_xevent)
  324.           (format T "LIST_ITEM=~A\n"
  325.               callback_item)
  326.           (format T "LIST_ITEM_LENGTH=~A\n"
  327.               callback_item_length)
  328.           (format T "LIST_ITEM_POSITION=~A\n"
  329.               callback_item_position)
  330. ;;;          (format T "LIST_SELECTED_ITEMS=~A\n"
  331. ;;;               callback_selected_items)
  332. ;;;          (format T "LIST_SELECTED_ITEM_COUNT=~A\n"
  333. ;;;               callback_selected_item_count)
  334. ;;;          (format T "LIST_SELECTION_TYPE=~A\n"
  335. ;;;                callback_selection_type)
  336.           )
  337.         ))
  338.            
  339.  
  340.  
  341. ;(xt_remove_callback cb1)
  342. ;(gc)
  343.  
  344. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  345. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  346. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  347. (progn
  348.   (setq list2_w
  349.     (send XM_LIST_WIDGET_CLASS :new :managed :scrolled
  350.           "list2" rc_w 
  351.           :XMN_WIDTH            500
  352.           :XMN_SELECTION_policy        :single_select
  353.           :XMN_LIST_SIZE_POLICY        :constant
  354.           :XMN_SCROLL_BAR_DISPLAY_POLICY    :static
  355.           :XMN_TRAVERSAL_ON            T
  356.           :XMN_ITEMS            list
  357.           :XMN_ITEM_COUNT            length
  358.           :XMN_VISIBLE_ITEM_COUNT        20
  359.           ))
  360.  
  361.   (setq cb2
  362.     (send list2_w :set_callback :XMN_SINGLE_SELECTION_CALLBACK
  363.           '(
  364.         callback_widget
  365.         callback_reason 
  366.         callback_xevent
  367.         callback_item
  368.         callback_item_length
  369.         callback_item_position
  370. ;;;         callback_selected_items
  371. ;;;         callback_selected_item_count
  372. ;;;         callback_selection_type
  373. ;;;        callback_selected_item_positions ;new for 1.1
  374.         )
  375.           '(
  376.         (format T "-------------------------------------------\n")
  377.         (format T "widget=~A, reason=~A, xevent=~A\n" 
  378.             callback_widget callback_reason callback_xevent)
  379.         (format T "LIST_ITEM=~A\n"
  380.             callback_item)
  381.         (format T "LIST_ITEM_LENGTH=~A\n"
  382.             callback_item_length)
  383.         (format T "LIST_ITEM_POSITION=~A\n"
  384.             callback_item_position)
  385. ;;;             (format T "LIST_SELECTED_ITEMS=~A\n"
  386. ;;;                 callback_selected_items)
  387. ;;;         (format T "LIST_SELECTED_ITEM_COUNT=~A\n"
  388. ;;;                 callback_selected_item_count)
  389. ;;;             (format T "LIST_SELECTION_TYPE=~A\n"
  390. ;;;                 callback_selection_type)
  391. ;;;         (format T "CALLBACK_SELECTED_ITEM_POSITIONS=~A\n"
  392. ;;;                 callback_selected_item_positions)
  393.         )
  394.           ))
  395.   )
  396.  
  397. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  398. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  399. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  400. (progn
  401.   (setq list3_w
  402.     (send XM_LIST_WIDGET_CLASS :new :managed :scrolled
  403.           "list3" rc_w
  404.           :XMN_WIDTH            500
  405.           :XMN_SELECTION_POLICY        :multiple_select
  406.           :XMN_LIST_SIZE_POLICY        :constant
  407.           :XMN_SCROLL_BAR_DISPLAY_POLICY    :static
  408.           :XMN_TRAVERSAL_ON            T
  409.           :XMN_ITEMS            list
  410.           :XMN_ITEM_COUNT            length
  411.           :XMN_VISIBLE_ITEM_COUNT        20
  412.           ))
  413.   (setq cb3
  414.     (send list3_w :set_callback :XMN_MULTIPLE_SELECTION_CALLBACK
  415.           (if (motif-1.1-p)
  416.           '(
  417.             callback_widget
  418.             callback_reason 
  419.             callback_xevent
  420.             callback_item
  421.             callback_item_length
  422.             callback_item_position
  423.             callback_selected_items
  424.             callback_selected_item_count
  425. ;;;            callback_selection_type
  426.             callback_selected_item_positions ;new for 1.1
  427.             )
  428.         '(
  429.           callback_widget
  430.           callback_reason 
  431.           callback_xevent
  432.           callback_item
  433.           callback_item_length
  434.           callback_item_position
  435.           callback_selected_items
  436.           callback_selected_item_count
  437. ;;;            callback_selection_type
  438. ;;;          callback_selected_item_positions ;new for 1.1
  439.           )
  440.         )
  441.           '(
  442.         (format T "-------------------------------------------\n")
  443.         (format T "widget=~A, reason=~A, xevent=~A\n" 
  444.             callback_widget callback_reason callback_xevent)
  445.         (format T "LIST_ITEM=~A\n"
  446.             callback_item)
  447.         (format T "LIST_ITEM_LENGTH=~A\n"
  448.             callback_item_length)
  449.         (format T "LIST_ITEM_POSITION=~A\n"
  450.             callback_item_position)
  451.         (format T "LIST_SELECTED_ITEMS=~A\n"
  452.             callback_selected_items)
  453.         (format T "LIST_SELECTED_ITEM_COUNT=~A\n"
  454.             callback_selected_item_count)
  455. ;;;        (format T "LIST_SELECTION_TYPE=~A\n"
  456. ;;;            callback_selection_type)
  457.         (if (motif-1.1-p)
  458.             (format T "CALLBACK_SELECTED_ITEM_POSITIONS=~A\n"
  459.                 callback_selected_item_positions)
  460.           )
  461.         )
  462.           ))
  463.   )
  464.  
  465.  
  466. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  467. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  468. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  469. (progn
  470.   (setq list4_w
  471.     (send XM_LIST_WIDGET_CLASS :new :managed :scrolled
  472.           "list4" rc_w 
  473.           :XMN_WIDTH            500
  474.           :XMN_SELECTION_POLICY        :extended_select
  475.           :XMN_LIST_SIZE_POLICY        :constant
  476.           :XMN_SCROLL_BAR_DISPLAY_POLICY    :static
  477.           :XMN_TRAVERSAL_ON            T
  478.           :XMN_ITEMS            list
  479.           :XMN_ITEM_COUNT            length
  480.           :XMN_VISIBLE_ITEM_COUNT        20
  481.           ))
  482.   (setq cb4
  483.     (send list4_w :set_callback :XMN_EXTENDED_SELECTION_CALLBACK
  484.           (if (motif-1.1-p)
  485.           '(
  486.             callback_widget
  487.             callback_reason 
  488.             callback_xevent
  489.             callback_item
  490.             callback_item_length
  491.             callback_item_position
  492.             callback_selected_items
  493.             callback_selected_item_count
  494.             callback_selection_type
  495.             callback_selected_item_positions ;new for 1.1
  496.             )
  497.         '(
  498.           callback_widget
  499.           callback_reason 
  500.           callback_xevent
  501.           callback_item
  502.           callback_item_length
  503.           callback_item_position
  504.           callback_selected_items
  505.           callback_selected_item_count
  506.           callback_selection_type
  507.           ))
  508.           '(
  509.         (format T "-------------------------------------------\n")
  510.         (format T "widget=~A, reason=~A, xevent=~A\n" 
  511.             callback_widget callback_reason callback_xevent)
  512.         (format T "LIST_ITEM=~A\n"
  513.             callback_item)
  514.         (format T "LIST_ITEM_LENGTH=~A\n"
  515.             callback_item_length)
  516.         (format T "LIST_ITEM_POSITION=~A\n"
  517.             callback_item_position)
  518.         (format T "LIST_SELECTED_ITEMS=~A\n"
  519.             callback_selected_items)
  520.         (format T "LIST_SELECTED_ITEM_COUNT=~A\n"
  521.             callback_selected_item_count)
  522.         (format T "LIST_SELECTION_TYPE=~A\n"
  523.             callback_selection_type)
  524.         (if (motif-1.1-p)
  525.             (format T "CALLBACK_SELECTED_ITEM_POSITIONS=~A\n"
  526.                 callback_selected_item_positions)
  527.           )
  528.         )
  529.           ))
  530.   )
  531.  
  532. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  533. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  534. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  535. (progn
  536.   (setq list5_w
  537.     (send XM_LIST_WIDGET_CLASS :new :managed :scrolled
  538.           "list5" rc_w 
  539.           :XMN_WIDTH        500
  540.           :XMN_SELECTION_POLICY    :browse_select
  541.           :XMN_LIST_SIZE_POLICY    :constant
  542.           :XMN_SCROLL_BAR_DISPLAY_POLICY :static
  543.           :XMN_TRAVERSAL_ON        T
  544.           :XMN_ITEMS        list
  545.           :XMN_ITEM_COUNT        length
  546.           :XMN_VISIBLE_ITEM_COUNT    20
  547.           ))
  548.   (setq cb5
  549.     (send list5_w :set_callback :XMN_BROWSE_SELECTION_CALLBACK
  550.           '(
  551.         callback_widget
  552.         callback_reason 
  553.         callback_xevent
  554.         callback_item
  555.         callback_item_length
  556.         callback_item_position
  557. ;;;         callback_selected_items
  558. ;;;         callback_selected_item_count
  559. ;;;         callback_selection_type
  560. ;;;         callback_selected_item_positions ;new for 1.1
  561.         )
  562.           '(
  563.         (format T "-------------------------------------------\n")
  564.         (format T "widget=~A, reason=~A, xevent=~A\n" 
  565.             callback_widget callback_reason callback_xevent)
  566.         (format T "LIST_ITEM=~A\n"
  567.             callback_item)
  568.         (format T "LIST_ITEM_LENGTH=~A\n"
  569.             callback_item_length)
  570.         (format T "LIST_ITEM_POSITION=~A\n"
  571.             callback_item_position)
  572. ;;;         (format T "LIST_SELECTED_ITEMS=~A\n"
  573. ;;;             callback_selected_items)
  574. ;;;         (format T "LIST_SELECTED_ITEM_COUNT=~A\n"
  575. ;;;             callback_selected_item_count)
  576. ;;;         (format T "LIST_SELECTION_TYPE=~A\n"
  577. ;;;             callback_selection_type)
  578. ;;;         (format T "CALLBACK_SELECTED_ITEM_POSITIONS=~A\n"
  579. ;;;             callback_selected_item_positions)
  580.         )
  581.           ))
  582.   )
  583.  
  584. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  585. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  586. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  587. (progn
  588.   (setq list6_w
  589.     (send XM_LIST_WIDGET_CLASS :new :managed :scrolled
  590.           "list6" rc_w 
  591.           :XMN_WIDTH        500
  592. ;;;           :XMN_SELECTION_POLICY    :extended_select
  593.           :XMN_LIST_SIZE_POLICY    :constant
  594.           :XMN_SCROLL_BAR_DISPLAY_POLICY :static
  595.           :XMN_TRAVERSAL_ON        T
  596.           :XMN_ITEMS        list
  597.           :XMN_ITEM_COUNT        length
  598.           :XMN_VISIBLE_ITEM_COUNT    20
  599.           ))
  600.   (setq cb6
  601.     (send list6_w :set_callback :XMN_DEFAULT_ACTION_CALLBACK
  602.           '(
  603.         callback_widget
  604.         callback_reason 
  605.         callback_xevent
  606.         callback_item
  607.         callback_item_length
  608.         callback_item_position
  609. ;;;         callback_selected_items
  610. ;;;         callback_selected_item_count
  611. ;;;         callback_selection_type
  612. ;;;         callback_selected_item_positions ;new for 1.1
  613.         )
  614.           '(
  615.         (format T "-------------------------------------------\n")
  616.         (format T "widget=~A, reason=~A, xevent=~A\n" 
  617.             callback_widget callback_reason callback_xevent)
  618.         (format T "LIST_ITEM=~A\n"
  619.             callback_item)
  620.         (format T "LIST_ITEM_LENGTH=~A\n"
  621.             callback_item_length)
  622.         (format T "LIST_ITEM_POSITION=~A\n"
  623.             callback_item_position)
  624. ;;;         (format T "LIST_SELECTED_ITEMS=~A\n"
  625. ;;;             callback_selected_items)
  626. ;;;         (format T "LIST_SELECTED_ITEM_COUNT=~A\n"
  627. ;;;             callback_selected_item_count)
  628. ;;;         (format T "LIST_SELECTION_TYPE=~A\n"
  629. ;;;             callback_selection_type)
  630. ;;;         (format T "CALLBACK_SELECTED_ITEM_POSITIONS=~A\n"
  631. ;;;             callback_selected_item_positions)
  632.         )
  633.           ))
  634.   )
  635.